package shortestpath;

import java.util.List;

/**
 * Finds shortest paths between nodes in a graph containing weighted edges
 * between nodes.
 * 
 * @author Michael Schmei&szlig;er
 * @param <T>
 *            The type of nodes contained in the graph
 */
public interface ShortestPathFinder<T extends Node> {

	/**
	 * Finds a shortest path between two nodes in a graph.
	 * 
	 * @param g
	 *            The graph where to look for the shortest path
	 * @param start
	 *            The start node
	 * @param destination
	 *            The destination node
	 * @return A shortest path between <code>start</code> and
	 *         <code>destination</code>, if there is one. This list begins with
	 *         <code>start</code> and ends with <code>destination</code>.
	 */
	List<T> findShortestPath(Graph<T> g, T start, T destination);

}
